উদাহরণ সহ Subscription এবং Disposable

Java Technologies - আরএক্সজাভা (RxJava) - ubscription এবং Disposable
169

RxJava-তে Subscription এবং Disposable হল Observable এবং Observer-এর মধ্যে সম্পর্ক পরিচালনার জন্য ব্যবহৃত গুরুত্বপূর্ণ উপাদান।

Subscription:

Subscription হল Observable এবং Observer-এর সংযোগ। যখন একটি Observer একটি Observable-এ subscribe করে, তখন Subscription তৈরি হয়। এটি data stream গ্রহণ শুরু করার প্রক্রিয়া নির্দেশ করে।

Disposable:

Disposable হল একটি interface যা Subscription বন্ধ বা বাতিল করার জন্য ব্যবহৃত হয়। এটি memory leak এড়াতে ব্যবহৃত হয়, বিশেষ করে যখন Observable অনির্দিষ্টকালের জন্য data emit করতে পারে।


উদাহরণ:

নিচের উদাহরণে Subscription এবং Disposable এর ব্যবহার দেখানো হয়েছে:

import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.disposables.Disposable;

public class RxJavaSubscriptionExample {
    public static void main(String[] args) {
        // Create an Observable
        Observable<String> observable = Observable.create(emitter -> {
            emitter.onNext("Item 1");
            emitter.onNext("Item 2");
            emitter.onNext("Item 3");
            emitter.onComplete();
        });

        // Subscribe to the Observable and get the Disposable
        Disposable disposable = observable.subscribe(
            item -> System.out.println("Received: " + item),   // onNext
            error -> System.err.println("Error: " + error),    // onError
            () -> System.out.println("Stream complete!")       // onComplete
        );

        // Check if the subscription is still active
        if (!disposable.isDisposed()) {
            System.out.println("Subscription is active.");
        }

        // Dispose the subscription
        disposable.dispose();

        // Verify if the subscription has been disposed
        if (disposable.isDisposed()) {
            System.out.println("Subscription has been disposed.");
        }
    }
}

কোড ব্যাখ্যা:

  1. Observable তৈরি করা:
    • Observable data emit করছে (onNext) এবং শেষে stream বন্ধ করছে (onComplete)।
  2. Subscription:
    • observable.subscribe()-এ Observer এর জন্য onNext, onError, এবং onComplete হ্যান্ডলার পাস করা হয়েছে।
  3. Disposable ব্যবহার:
    • Disposable disposable = observable.subscribe() ডিভাইসটি সংরক্ষণ করছে।
    • disposable.dispose() এর মাধ্যমে subscription বন্ধ করা হয়েছে।
    • isDisposed() এর মাধ্যমে subscription বন্ধ হয়েছে কিনা তা যাচাই করা হয়েছে।

Disposable-এর গুরুত্বপূর্ণ ব্যবহার:

  1. Memory Leak এড়ানো:
    • Long-running Observables-এ subscription বন্ধ না করলে memory leak হতে পারে। Disposable ব্যবহার করে এটি এড়ানো যায়।
  2. Android Context Management:
    • Activity বা Fragment ধ্বংস হওয়ার সময় (e.g., configuration change) subscription বন্ধ করার জন্য Disposable ব্যবহার করা হয়।

Android Context-এ Disposable-এর উদাহরণ:

import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.disposables.CompositeDisposable;

public class RxJavaAndroidExample {
    private CompositeDisposable compositeDisposable = new CompositeDisposable();

    public void fetchData() {
        Observable<String> observable = Observable.just("Data 1", "Data 2", "Data 3");

        // Add subscription to CompositeDisposable
        compositeDisposable.add(
            observable.subscribe(
                item -> System.out.println("Received: " + item),
                error -> System.err.println("Error: " + error),
                () -> System.out.println("Stream complete!")
            )
        );
    }

    public void onDestroy() {
        // Dispose all subscriptions when Activity or Fragment is destroyed
        compositeDisposable.clear();
    }
}

কোড ব্যাখ্যা:

  1. CompositeDisposable:
    • একাধিক Disposable একত্রে পরিচালনা করতে ব্যবহৃত হয়।
  2. onDestroy():
    • Activity বা Fragment ধ্বংস হওয়ার সময় compositeDisposable.clear() ডাকা হয়, যা সমস্ত subscription বন্ধ করে।

সারমর্ম:

  • Subscription: Observable থেকে data stream পাওয়ার সংযোগ।
  • Disposable: Subscription বন্ধ করার পদ্ধতি।
  • CompositeDisposable: একাধিক subscription একত্রে পরিচালনা করার জন্য ব্যবহৃত।

Disposable এবং CompositeDisposable সঠিকভাবে ব্যবহার করা না হলে memory leak-এর ঝুঁকি থেকে যায়। তাই এগুলো ব্যবহারে সতর্ক থাকা উচিত।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...